package com.tedu.api.list;
import org.junit.Test;

import java.util.*;
/**链表实现的集合   包位置：java.util
 * List接口集合--三个实现类：
 * ArrayList 实现类： 数组实现
 *             特点：查询快【按照下标】、增删慢【改动下标：元素】
 * LinkedList 实现类：双向链表实现
 *              特点：查询慢【按照下标】、增删快【首、尾元素，中间元素】
 * ArrayList与LinkedList大部分方法完全一致：
 * 添加  add()  获取  get()  删除  remove()
 * size() 获取集合总数  clear()清空集合元素
 *
 * 不一致的方法：
 * indexOf() lastIndexOf
 * addFist()
 * addLast()
 * removeFirst()
 * removeLast()
 */
public class LinkedListAPI {
    @Test
    public void testIndexOf(){
        //创建集合--双向链接集合
        List<String> list=new LinkedList<>();
        list.add("三吱");
        list.add("龙虎斗");
        list.add("螺狮粉");
        list.add("庵汤");
        /**ArrayList与LinkedList通用方法
         * indexOf()    返回值：int
         * 作用：返回指定元素在集合中的第一次出现的索引位置
         *      【理解：返回元素的下标位】
         */
        int index=list.indexOf("庵汤");
        /**LinkedList独有方法
         * LastIndexOf()    返回值：int
         *作用：返回最后的元素在集合中出现的索引位置
         */
        int lastIndex=list.lastIndexOf("庵汤");
        System.out.println("返回最后元素下标："+lastIndex);
    }
/**LinkedList独有方法
 *
 *addFist()
 *addLast()
 *removeFirst()
 *removeLast()
 */
@Test
    public void testAR(){
    //创建集合--双向链接集合
    List<String> list=new LinkedList<>();
    list.add("三吱");
    list.add("龙虎斗");
    list.add("螺狮粉");
    list.add("庵汤");
    //LinkedList独有方法
    ((LinkedList)list).addFirst("榴莲");
    ((LinkedList)list).addLast("豆汁");
    System.out.println("双向链表:"+list);
    ((LinkedList)list).removeFirst();
    System.out.println("双向链表:"+list);
   }
}
